package com.zxl.designpattern.behavioral.observer;

/**
 * 统计信息显示
 * 实现了Observer和DisplayElement接口，显示温度统计信息
 */
public class StatisticsDisplay implements Observer, DisplayElement {
    private double maxTemp = 0.0;  // 最高温度
    private double minTemp = 200;  // 最低温度
    private double tempSum = 0.0;  // 温度总和
    private int numReadings;       // 读数次数

    @Override
    public void update(double temperature, double humidity, double pressure) {
        // 更新统计数据
        tempSum += temperature;
        numReadings++;
        
        if (temperature > maxTemp) {
            maxTemp = temperature;
        }
        
        if (temperature < minTemp) {
            minTemp = temperature;
        }
        
        display();
    }
    
    @Override
    public void display() {
        double avgTemp = numReadings > 0 ? tempSum / numReadings : 0;
        System.out.printf("温度统计: 最高 %.1f°C，最低 %.1f°C，平均 %.1f°C%n", 
                maxTemp, minTemp, avgTemp);
    }
}    